package com.higold.cloud.api

import com.higold.cloud.mvp.model.bean.*
import com.higold.cloud.mvp.model.bean.postReport.PostReport
import com.higold.cloud.mvp.model.bean.regionalDetail.RegionalDetail
import com.higold.cloud.mvp.model.bean.achievedetailbean.AchieveDetail
import com.higold.cloud.mvp.model.bean.dailyPostList.DailyPostList
import com.higold.cloud.mvp.model.bean.developList.DevelopList
import com.higold.cloud.mvp.model.bean.marketList.MarketList
import com.higold.cloud.mvp.model.bean.regionalList.RegionalList
import com.higold.cloud.mvp.model.bean.shopDeatail.ShopDetail
import com.higold.cloud.mvp.model.bean.userInfo.UserInfo
import io.reactivex.Observable
import okhttp3.MultipartBody
import retrofit2.http.*


/**
 * Created by xuhao on 2017/11/16.
 * Api 接口
 */

interface ApiService {

    /**
     * 首页精选
     */
    @GET("v2/feed?")
    fun getFirstHomeData(@Query("num") num: Int): Observable<HomeBean>

    /**
     * 根据 nextPageUrl 请求数据下一页数据
     */
    @GET
    fun getMoreHomeData(@Url url: String): Observable<HomeBean>

    /**
     * 根据item id获取相关视频
     */
    @GET("v4/video/related?")
    fun getRelatedData(@Query("id") id: Long): Observable<HomeBean.Issue>

    /**
     * 获取分类
     */
    @GET("v4/categories")
    fun getCategory(): Observable<ArrayList<CategoryBean>>

    /**
     * 获取分类详情List
     */
    @GET("v4/categories/videoList?")
    fun getCategoryDetailList(@Query("id") id: Long): Observable<HomeBean.Issue>

    /**
     * 获取更多的 Issue
     */
    @GET
    fun getIssueData(@Url url: String): Observable<HomeBean.Issue>

    /**
     * 获取全部排行榜的Info（包括，title 和 Url）
     */
    @GET("v4/rankList")
    fun getRankList(): Observable<TabInfoBean>

    /**
     * 获取搜索信息
     */
    @GET("v1/search?&num=10&start=10")
    fun getSearchData(@Query("query") query: String): Observable<HomeBean.Issue>

    /**
     * 热门搜索词
     */
    @GET("v3/queries/hot")
    fun getHotWord(): Observable<ArrayList<String>>

    /**
     * 关注
     */
    @GET("v4/tabs/follow")
    fun getFollowInfo(): Observable<HomeBean.Issue>

    /**
     * 作者信息
     */
    @GET("v4/pgcs/detail/tab?")
    fun getAuthorInfo(@Query("id") id: Long): Observable<AuthorInfoBean>

    /**
     * 代理商任务达成情况
     */
    @GET("getUserMissionList?")
    fun getAchieveInfo(@Query("type") type: Int, @Query("id") id: Int): Observable<AchieveBean>

    /**
     * 代理商达成详情
     */
    @GET("getUserSalesDetail?")
    fun getAchieveDetail(@Query("user_code") user_code: String): Observable<AchieveDetail>

    /**
     * 大区业务员（当月列表）
     */
    @GET("getSalemanSaleList?")
    fun getRegionalList(@Query("id") id: Int): Observable<RegionalList>

    /**
     * 大区业务员（详情）
     */
    @GET("getSalemanSaleDetail?")
    fun getRegionalDetail(@Query("salemanId") salemanId: String): Observable<RegionalDetail>

    /**
     * 上传图片
     */

    @POST("uploadPic")
    @Multipart
    fun upLoadImg(@Part velue: MultipartBody.Part): Observable<UploadPic>

    /**
     * 提交汇报
     */
    @POST("dailyPost?")
    fun requestReport(@Body params: HashMap<String, String>): Observable<PostReport>

    /**
     * 业务员汇报列表
     */
    @GET("getDailyPostList?")
    fun requestDailyPostList(@Query("id") id: Int): Observable<DailyPostList>

    /**
     * 门店列表
     */
    @GET("getSalemanShopList?")
    fun requestDevelopList(@Query("id") id: Int): Observable<DevelopList>

    /**
     * 门店详情
     */
    @GET("getShopDetail?")
    fun requestShopDetail(@Query("shopId") shopId: Int): Observable<ShopDetail>

    /**
     * 门店排名列表http://10.30.7.254:88/api/getAccountDetail?accountId=1
     */
    @GET("getUserSaleList")
    fun requestMarketList(): Observable<MarketList>


    /**
     * 个人中心（详情）
     */
    @GET("getAccountDetail?")
    fun getUserInfo(@Query("accountId") accountId: Int): Observable<UserInfo>
}